/**
 * 注意：在某种情况下(我是在浏览器打开调试工具时候遇到一次),点击聚合点画的圆会离聚合点非常远，导致无法查出相同的点。
 */

var mapObj=null;
$(document).ready(function(){
    mapObj=new clustereEeffect("map_container");
})

function clustereEeffect(domId){
    this.map = new BMap.Map(domId); // 创建地图实例
    this.initMap();//地图初始化
};

clustereEeffect.prototype.initMap=function(){
    this.map.centerAndZoom("成都", 10);
    this.map.enableScrollWheelZoom();
    this.map.enableKeyboard();
    setTimeout(()=>{
        mapObj.addMarker();
    },1000)
};

 // 随机向地图添加25个标注
 clustereEeffect.prototype.addMarker = function () {
      var markers = [];
      for (var i = 0; i < testPoint.length; i ++) {
          var point = new BMap.Point(testPoint[i].lng,testPoint[i].lat);
          var marker = new BMap.Marker(point);
          marker.setTitle(testPoint[i].name);
          markers.push(marker);
      }
      console.log(markers)
	//最简单的用法，生成一个marker数组，然后调用markerClusterer类即可。
    var markerClusterer = new BMapLib.MarkerClusterer(this.map, {markers:markers});
};

//拿到相同的聚合点里面的数据
clustereEeffect.prototype.isCircle=function(circle){
    //1.先拿到所有点数据里面重复的数据
    var repeat=this.sortArr(testPoint, 'lat');//返回一个新的数组，将相同对象添加到同一个数组
    //console.log(repeat);
    //拿到重复的对象
	var newArry=[];
	for (var i in repeat){
		if(repeat[i].length>1){
			newArry.push(repeat[i][0]);
		}
    }
    console.log(newArry)
    //2.判断点是否在圆形区域内
    for (var k in newArry){
		var point = new BMap.Point(newArry[k].lng,newArry[k].lat);// 创建点坐标
		if(BMapLib.GeoUtils.isPointInCircle(point,circle)){
            console.log("该point 在 circle内");
			var getArray=this.getPointData(point.lng,point.lat,testPoint);
			console.log(getArray);
			var liHtml="<a href='javascript:;' onclick='mapObj.hideSameBox()'>关闭</a>";
			for (var i in getArray) {
				liHtml+="<li>"+getArray[i].name+"</li>"
			}
			$("#same_data").html(liHtml);
			$("#same_data").show();
		}else
		{
			console.log("该point不在circle内");
		}
	}
};

//隐藏box框
clustereEeffect.prototype.hideSameBox=function(){
    $("#same_data").hide();
    this.map.setZoom(10);
};

//点数据重新排序组合
clustereEeffect.prototype.sortArr=function(arr,str){
    var _arr = [],
		_t = [],
		// 临时的变量
		_tmp;

	// 按照特定的参数将数组排序将具有相同值得排在一起
	arr = arr.sort(function(a, b) {
		var s = a[str],
			t = b[str];

		return s < t ? -1 : 1;
	});

	if ( arr.length ){
		_tmp = arr[0][str];
	}
	// console.log( arr );
	// 将相同类别的对象添加到统一个数组
	for (var i in arr) {
		//console.log( _tmp);
		if ( arr[i][str] === _tmp ){
			_t.push( arr[i] );
		} else {
			_tmp = arr[i][str];
			_arr.push( _t );
			_t = [arr[i]];
		}
	}
	// 将最后的内容推出新数组
	_arr.push( _t );
	return _arr;
};

//获取相同的数据
clustereEeffect.prototype.getPointData=function(lng,lat,local) {
	var getArry=[];
	for (var i in local){
		if(local[i].lng==lng && local[i].lat==lat){
			getArry.push(local[i]);
		}
	}
	return getArry;
}